﻿using System;
using System.Collections.Generic;
using System.Data.Linq;
using System.Linq;
using System.Text;
using System.Windows;
using Quiz.LINQData;

namespace Quiz
{
    class OptionenAuswahl : DependencyObject
    {
        #region DepencyProperties
        public static readonly DependencyProperty SchriftgroesseFrageProperty = DependencyProperty.Register("SchriftgroesseFrage", typeof(int), typeof(OptionenAuswahl));
        public static readonly DependencyProperty SchriftgroesseAntwortProperty = DependencyProperty.Register("SchriftgroesseAntwort", typeof(int), typeof(OptionenAuswahl));
        public static readonly DependencyProperty AntwortzeitInSekundenProperty = DependencyProperty.Register("Antwortzeit", typeof(int), typeof(OptionenAuswahl));
        public static readonly DependencyProperty TestzeitInSekundenProperty = DependencyProperty.Register("TestZeit", typeof(int), typeof(OptionenAuswahl));
        #endregion

        #region Properties
        /// <summary>
        /// Gibt die Schriftgroesse für die Frage zurück
        /// </summary>
        public int SchriftgroesseFrage
        {
            get { return (int)GetValue(SchriftgroesseFrageProperty); }
            set { SetValue(SchriftgroesseFrageProperty, value); }
        }

        public int SchriftgroesseAntwort
        {
            get { return (int) GetValue(SchriftgroesseAntwortProperty); }
            set { SetValue(SchriftgroesseAntwortProperty,value); }
        }

        public int AntwortzeitIndSekunden
        {
            get { return (int)GetValue(AntwortzeitInSekundenProperty) ; }
            set { SetValue(AntwortzeitInSekundenProperty,value); }
        }

        public int TestzeitInSekunden
        {
            get { return (int) GetValue(TestzeitInSekundenProperty); }
            set { SetValue(TestzeitInSekundenProperty,value); }
        }

        #endregion

        #region Konstruktor
        /// <summary>
        /// Erstellen der passenden Optionen auswahl
        /// </summary>
        /// <param name="optionen">Tabelle mit den Optionen die ausgelesen werden sollen.</param>
        public OptionenAuswahl(Table<Optionen> optionen)
        {
            //Alle Optionen durchgehen und laden
            var queryOptionen = from tOption in optionen select tOption;

            foreach (Optionen eOption in queryOptionen)
            {
                //Prüfen welcher Optionsname hinterlegt wurde und dann den passenden Wert laden und "hinterlegen"
                switch (eOption.Optionsname.Trim())
                {
                    case Optionen._schriftgroesseFrage:
                        SchriftgroesseFrage = Convert.ToInt32(eOption.Optionswert.Trim());
                        break;
                    case Optionen._schriftgroesseAntwort:
                        SchriftgroesseAntwort = Convert.ToInt32(eOption.Optionswert.Trim());
                        break;
                    case Optionen._testzeitInSekunden:
                        TestzeitInSekunden = Convert.ToInt32(eOption.Optionswert.Trim());
                        break;
                    case  Optionen._antwortZeitInSekunden:
                        AntwortzeitIndSekunden = Convert.ToInt32(eOption.Optionswert.Trim());
                        break;
                }
            }
        }
        #endregion
    }
}
